Sub Methode_2_PP(pp) Dim j, istart1 As Integer Dim dx, dy, r2, a, r, a2 Dim loopc As Integer Inkey$ = "" istart1 = istart + pp - 1 amax = 0 loopc = 0 sync0(pp) = 0 : sync1(pp) = 0 For j = istart1 To totstar Step np kax0(j) = 0 : kay0(j) = 0 kax1(j) = 0 : kay1(j) = 0 kax2(j) = 0 : kay2(j) = 0 kax3(j) = 0 : kay3(j) = 0 kbx0(j) = 0 : kby0(j) = 0 kbx1(j) = 0 : kby1(j) = 0 kbx2(j) = 0 : kby2(j) = 0 kbx3(j) = 0 : kby3(j) = 0 loopc = loopc + 1 Next j nnout(pp) = nnout(pp) + loopc Synchronisation(pp, 1) ' calculate ka0 For j = istart To totstar For k = istart1 To totstar Step np If j <> k Then dx = x0(j) - x0(k) dy = y0(j) - y0(k) r2 = dx * dx + dy * dy r = Sqrt(r2) a = G * m(j) / r2 If mond = 1 Then a2 = a * monda0 If a2 > 0 Then a = Sqrt(a2) Else a = -Sqrt(-a2) End If End If kax0(k) = kax0(k) + h * a * dx / r kay0(k) = kay0(k) + h * a * dy / r End If Next k Next j ' calculate kb0 For j = istart1 To totstar Step np kbx0(j) = h * vx0(j) kby0(j) = h * vy0(j) Next j Synchronisation(pp, 2) ' calculate ka1 For j = istart To totstar For k = istart1 To totstar Step np If j <> k Then dx = x0(j) + kbx0(j) / 2 - x0(k) - kbx0(k) / 2 dy = y0(j) + kby0(j) / 2 - y0(k) - kby0(k) / 2 r2 = dx * dx + dy * dy r = Sqrt(r2) a = G * m(j) / r2 If a > amax Then amax = a If mond = 1 Then a2 = a * monda0 If a2 > 0 Then a = Sqrt(a2) Else a = -Sqrt(-a2) End If End If kax1(k) = kax1(k) + h * a * dx / r kay1(k) = kay1(k) + h * a * dy / r End If Next k Next j ' calculate kb1 For j = istart1 To totstar Step np kbx1(j) = h * (vx0(j) + kax0(j) / 2) kby1(j) = h * (vy0(j) + kay0(j) / 2) Next j Synchronisation(pp, 3) ' calculate ka2 For j = istart To totstar For k = istart1 To totstar Step np If j <> k Then dx = x0(j) + kbx1(j) / 2 - x0(k) - kbx1(k) / 2 dy = y0(j) + kby1(j) / 2 - y0(k) - kby1(k) / 2 r2 = dx * dx + dy * dy r = Sqrt(r2) a = G * m(j) / r2 If mond = 1 Then a2 = a * monda0 If a2 > 0 Then a = Sqrt(a2) Else a = -Sqrt(-a2) End If End If kax2(k) = kax2(k) + h * a * dx / r kay2(k) = kay2(k) + h * a * dy / r End If Next k Next j ' calculate kb2 For j = istart1 To totstar Step np kbx2(j) = h * (vx0(j) + kax1(j) / 2) kby2(j) = h * (vy0(j) + kay1(j) / 2) Next j Synchronisation(pp, 4) ' calculate ka3 For j = istart To totstar For k = istart1 To totstar Step np If j <> k Then dx = x0(j) + kbx2(j) - x0(k) - kbx2(k) dy = y0(j) + kby2(j) - y0(k) - kby2(k) r2 = dx * dx + dy * dy r = Sqrt(r2) a = G * m(j) / r2 If a > amax Then amax = a If mond = 1 Then a2 = a * monda0 If a2 > 0 Then a = Sqrt(a2) Else a = -Sqrt(-a2) End If End If kax3(k) = kax3(k) + h * a * dx / r kay3(k) = kay3(k) + h * a * dy / r End If Next k Next j ' calculate kb3 For j = istart1 To totstar Step np kbx3(j) = h * (vx0(j) + kax2(j)) kby3(j) = h * (vy0(j) + kay2(j)) Next j Synchronisation(pp, 5) ' y i+1 = y i + (ka0 + 2 * ka1 + 2 * ka2 + ka3) / 6 For j = istart1 To totstar Step np vx1(j) = vx0(j) + (kax0(j) + 2 * kax1(j) + 2 * kax2(j) + kax3(j)) / 6 vy1(j) = vy0(j) + (kay0(j) + 2 * kay1(j) + 2 * kay2(j) + kay3(j)) / 6 Next j ' z i+1 = z i + (kb0 + 2 * kb1 + 2 * kb2 + kb3) / 6 For j = istart1 To totstar Step np x1(j) = x0(j) + (kbx0(j) + 2 * kbx1(j) + 2 * kbx2(j) + kbx3(j)) / 6 y1(j) = y0(j) + (kby0(j) + 2 * kby1(j) + 2 * kby2(j) + kby3(j)) / 6 Next j Synchronisation(pp, 6) ' Update t = 0 values with t = 1 values For j = istart1 To totstar Step np x0(j) = x1(j) : y0(j) = y1(j) vx0(j) = vx1(j) : vy0(j) = vy1(j) Next j End Sub